package dao;

import hbt.HibernateUtil;

import negocio.Deposito;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

public class DepositoDAO {
	private static DepositoDAO instancia = null;
	private static SessionFactory sf = null;
	private Session session = null;
	
	public static DepositoDAO getInstancia()
	{
		if(instancia == null)
		{
			sf = HibernateUtil.getSessionFactory();
			instancia = new DepositoDAO();
		} 
		return instancia;
	}
	
	private Session getSession()
	{
		if(session == null || !session.isOpen()){
			if(sf.isClosed()){
				session = sf.openSession();
			}
			else
				session = sf.getCurrentSession();
		}
		return session;
	}
	
	public void closeSession(){
		if (session.isOpen()) session.close();
	}
	
	public void persistDeposito(Deposito deposito)
	{
		Session s=getSession();
		s.beginTransaction();
		s.persist(deposito);
		s.flush();
		s.getTransaction().commit();
		closeSession();
	}
	
	public void updateDeposito(Deposito deposito)
	{
		Session s=getSession();
		s.beginTransaction();
		s.update(deposito);
		s.flush();
		s.getTransaction().commit();
		closeSession();
	}
}
